package com.smartleanx.module.hrm.controller.admin.employee.vo;

import lombok.*;

import java.util.*;

import io.swagger.v3.oas.annotations.media.Schema;
import com.smartleanx.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

import static com.smartleanx.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 员工分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class EmployeePageReqVO extends PageParam {

    @Schema(description = "员工id")
    private Collection<Long> id;

    @Schema(description = "姓名")
    private String name;

    @Schema(description = "手机")
    private String mobile;

    @Schema(description = "证件类型")
    private Integer idType;

    @Schema(description = "证件号码")
    private String idNumber;

    @Schema(description = "性别")
    private Integer sex;

    @Schema(description = "最高学历")
    private Integer highestEducation;

    @Schema(description = "籍贯")
    private String nativePlace;

    @Schema(description = "出生日期")
    private LocalDateTime dateOfBirth;

    @Schema(description = "生日类型 1 阳历 2 农历")
    private Integer birthdayType;

    @Schema(description = "入职时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] entryTime;

    @Schema(description = "司龄")
    private Integer companyAge;

    @Schema(description = "员工号")
    private String employeeNo;

    @Schema(description = "部门ID")
    private Long[] deptIds;

    @Schema(description = "岗位id")
    private Long postId;

    @Schema(description = "直属上级ID")
    private Long leaderId;

    @Schema(description = "聘用形式")
    private Integer employmentForm;

    @Schema(description = "聘用类型")
    private Integer employmentType;

    @Schema(description = "员工状态")
    private Integer[] state;

    @Schema(description = "试用期 0 无试用期")
    private Integer probationPeriod;

    @Schema(description = "工作地点")
    private String workAddress;

    @Schema(description = "是否已婚")
    private Boolean married;

    @Schema(description = "是否已育")
    private Boolean fertilized;

    @Schema(description = "健康状态")
    private Boolean healthStatus;

    @Schema(description = "现居地址")
    private String currentAddress;

    @Schema(description = "工资卡卡号")
    private String cardNumber;

    @Schema(description = "银行名称")
    private String bankName;

    @Schema(description = "开户行")
    private String openingBank;

    @Schema(description = "转正日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] regularizationTime;
}
